package com.crm.business.crm.mapper;


import com.crm.common.crm.entity.BO.CrmRoiSearchBO;
import com.crm.common.crm.entity.PO.CrmPutinMoney;
import com.crm.business.servlet.BaseMapper;
import com.crm.common.ka.core.servlet.upload.FileEntity;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public interface CrmPutinMoneyMapper extends BaseMapper<CrmPutinMoney> {

    /**
     * 根据投放平台、课程期数、投放日期、投放金额id查询投放金额表中的数据
     * @param putinPlatform 投放平台
     * @param coursePeriods 课程期数
     * @param putinDate 投放日期
     * @param putinMoneyId 投放金额id
     * @return
     */
    CrmPutinMoney queryPutinDataByPlatformAndPeriodsAndDate(@Param("putinPlatform") String putinPlatform, @Param("coursePeriods") String coursePeriods, @Param("putinDate") Date putinDate, @Param("putinMoneyId") Integer putinMoneyId);

    /**
     * 根据投放平台与课程期数查询最小投放日期
     * @param putinPlatform 投放平台
     * @param coursePeriods 课程期数
     * @return
     */
    public Date getMinPutinDateByPlatformAndCoursePeriods(@Param("putinPlatform") String putinPlatform, @Param("coursePeriods") String coursePeriods);

    /**
     * 根据投放平台与课程期数查询最大投放日期
     * @param putinPlatform 投放平台
     * @param coursePeriods 课程期数
     * @return
     */
    public Date getMaxPutinDateByPlatformAndCoursePeriods(@Param("putinPlatform") String putinPlatform, @Param("coursePeriods") String coursePeriods);

    /**
     * 根据投放平台与课程期数查询投放金额数据信息
     * @param putinPlatform 投放平台
     * @param coursePeriods 课程期数
     * @return
     */
    public List<CrmPutinMoney> queryPutinMoneyDataByPlatformAndPeriods(@Param("putinPlatform") String putinPlatform, @Param("coursePeriods") String coursePeriods);


    /**
     * 分页查询 总数
     * @param search
     * @return
     */
    public Integer queryPageListCount(@Param("data") CrmRoiSearchBO search);


    /**
     * 分页查询 列表
     * @param search
     * @return
     */
    public List<CrmPutinMoney> queryPageList(@Param("data") CrmRoiSearchBO search);

    /**
     * 查询大类二类
     * @param
     * @return
     */
    @Select("select category_code as categories,source as putinPlatform from hp_crm_source")
    public List<CrmPutinMoney> queryCategory();

    public CrmPutinMoney queryCrmPutinMoneyById(@Param("putinMoneyId") Integer putinMoneyId);

    public CrmPutinMoney queryListById(@Param("putinMoneyId") Integer putinMoneyId);
    List<FileEntity> queryListCrmBatch(@Param("batchIds") String batchIds);

    public int updateCheckStatus(@Param("data") CrmPutinMoney crmPutinMoney);

    public CrmPutinMoney queryPutinMoneyDataById(@Param("id") Integer id);


    /**
     * 获取Roi提交审核接收人
     * @return
     */
    @Select(" SELECT user_id FROM bill_admin_user WHERE mobile='13000000008' or post='财务专员' ")
    List<Long> getRecipient();

    /**
     * 获取最近的record_id对应的一条数据
     */
    @Select("select MAX(examine_record_id) from bill_crm_putin_money")
    public Integer getRecordID();

    @Select("select * from bill_crm_putin_money where examine_record_id=#{recordId}")
    public CrmPutinMoney getRecordOne(Integer recordId);

    /**
     * 获取财务部门的userid
     * @return
     */
    @Select("select role_id from bill_admin_user_role where user_id=#{userId} ")
    List<Long> getDeptUserId(Long userId);

    @Select("select category_code from hp_crm_source where source=#{source}")
    int queryCategor(String source);

    /**
     * 根据组织查询审核中的消耗金额
     * @param deptId
     * @return
     */
    public BigDecimal queryPracticalPutinMoneyByDeptId(@Param("deptId") Integer deptId);

}
